#include <boost/asio.hpp>
#include <boost/asio/use_awaitable.hpp>
#include <boost/asio/co_spawn.hpp>
#include <boost/asio/detached.hpp>
#include <iostream>

using namespace std;
namespace asio = boost::asio;

asio::awaitable<void> async_time_task(asio::io_context& io_context)
{
    // 异步定时器
    asio::steady_timer timer(io_context, chrono::seconds(1));
    // 异步等待 --> co_await挂起协程,等待完成
    co_await timer.async_wait(asio::use_awaitable);
    cout << "async_time_task 异步定时任务执行" << endl;
}

int main()
{
    asio::io_context io_context;
    // co_spawn 启动协程, detached 不关心结果
    asio::co_spawn(io_context, async_time_task(io_context), asio::detached);
    io_context.run();

    return 0;
}